﻿/**
* Скрипт отображающий грид управления компаниями
*/
var container = Ext.getCmp(sectionId);
Ext.onReady(function () {
    var checkboxModel = new Ext.grid.CheckboxSelectionModel();
    var companiesGrid = {
        xtype: 'grid',
        frame: true,
        store: new Ext.data.JsonStore({
            root: 'data',
            idProperty: 'id',
            storeId: 'companiesStore',
            fields: [
                {
                    name: 'id',
                    type: 'int'
                },
                'displayName',
                'systemName',
                'description',
                {
                    name: 'rating',
                    type: 'int'
                },
                {
                    name: 'views',
                    type: 'int'
                },
                'hidden',
                'new',
                'hot',
                'city',
                'email',
                'website',
                'phones',
                'worktime',
                'logoImage',
                'visitors',
                'companyType',
                'companyTypeId',
                'goods',
                'services',
                {
                    name: 'dateCreated',
                    type:' date'
                },
                {
                    name: 'dateModified',
                    type: 'date'
                }
            ]
        }),
        height: 400,
        autoExpandColumn: 'companyDisplayNameColumn',
        id: 'companiesGrid',
        selModel: checkboxModel,
        colModel: new Ext.grid.ColumnModel({
            columns: [
                checkboxModel,
                {
                    header: 'ИД',
                    dataIndex: 'id',
                    id: 'companyIdColumn',
                    width: 30
                },
                {
                    header: 'Наименование',
                    dataIndex: 'displayName',
                    id: 'companyDisplayNameColumn',
                    width: 120
                },
                {
                    header: 'Системное имя',
                    dataIndex: 'systemName',
                    id: 'companySystemNameColumn',
                    width: 100
                },
                {
                    header: 'Тип',
                    dataIndex: 'companyType',
                    id: 'companyTypeColumn',
                    width: 100
                },
                {
                    header: 'Рейтинг',
                    dataIndex: 'rating',
                    id: 'companyRatingColumn',
                    width: 80
                },
                {
                    header: 'Просмотров',
                    dataIndex: 'views',
                    id: 'companyViewsColumn',
                    width: 80
                },
                {
                    header: 'Посетителей',
                    dataIndex: 'visitors',
                    id: 'companyVisitorsColumn',
                    width: 80
                },
                {
                    header: 'Дата создания',
                    dataIndex: 'dateCreated',
                    id: 'companyDateCreatedColumn',
                    width: 120
                },
                {
                    header: 'Дата модификации',
                    dataIndex: 'dateModified',
                    id: 'companyDateModifiedColumn',
                    width: 120
                }
            ]
        }),
        tbar: [
            {
                text: 'Обновить список',
                handler: function() {
                    reloadCompanies();
                }
            },
            '-',
            {
                text: 'Добавить',
                tooltip: 'Отображает диалог добавления компании',
                handler: function(){
                    showCompanyDialog();
                }
            },
            {
                text: 'Редактировать',
                tooltip: 'Отображает диалог редактирования компании',
                handler: function(){
                    var selected = Ext.getCmp('companiesGrid').getSelectionModel().getSelected();
                    if (selected != null){
                        showCompanyDialog(selected);
                    }
                }
            },
            {
                text: 'Удалить',
                tooltip: 'Удаляет выбранные компании безвозвратно',
                handler: function(){

                }
            }

        ],
        listeners: {
            rowdblclick: function(){
                var selected = Ext.getCmp('usersGrid').getSelectionModel().getSelected();
                showCompanyDialog(selected);
            }
        }
    };

container.add(companiesGrid);
container.doLayout();

    /**
     * Загружает список всех компаний с сервера
     */
    function reloadCompanies(){
        global.Ajax({
            url: '/ControlPanel/ManageCompanies/GetCompanies',
            maskEl: Ext.getCmp('companiesGrid'),
            maskMsg: 'Идет загрузка списка компаний',
            success: function(data){
                Ext.getCmp('companiesGrid').getStore().loadData(data);
            }
        });
    }
    reloadCompanies();

    /**
     * Отображает диалог создания или редактирования компании
     * @param company
     */
    function showCompanyDialog(company){
        var wnd = new Ext.Window({
            title: company != undefined ? "Редактирование компании "+company.data.displayName : "Новая компания",
            resizable: true,
            width: 500,
            height: 650,
            layout: 'fit',
            items: [
                {
                    xtype: 'tabpanel',
                    activeTab: 0,
                    defferedRender: false,
                    items: [
                        {
                            xtype: 'form',
                            id: 'companyForm',
                            labelAlign: 'top',
                            bodyStyle: 'padding: 5px',
                            title: 'Свойства',
                            items: [
                                {
                                    xtype: 'hidden',
                                    id: 'companyIdField',
                                    value: company != undefined ? company.data.id : -1
                                },
                                {
                                    xtype: 'textfield',
                                    allowBlank: false,
                                    fieldLabel: 'Наименование компании',
                                    anchor: '100%',
                                    value: company != undefined ? company.data.displayName : "",
                                    id: 'companyDisplayNameField'
                                },
                                {
                                    xtype: 'textfield',
                                    allowBlank: false,
                                    fieldLabel: 'Системное имя (адрес)',
                                    anchor: '100%',
                                    value: company != undefined ? company.data.systemName : "",
                                    id: 'companySystemNameField'
                                },
                                {
                                    xtype: 'textarea',
                                    allowBlank: false,
                                    fieldLabel: 'Описание',
                                    anchor: '100%',
                                    value: company != undefined ? company.data.description : "",
                                    id: 'companyDescriptionField',
                                    height: 100
                                },
                                {
                                    xtype: 'combo',
                                    fieldLabel: 'Тип компании',
                                    id: 'companyTypeField',
                                    mode: 'local',
                                    triggerAction: 'all',
                                    lazyRender: true,
                                    readonly: true,
                                    anchor: '100%',
                                    typeAhead: true,
                                    store: new Ext.data.ArrayStore({
                                        fields: ['id','name'],
                                        data: [
                                            [0,"Реальный магазин"],
                                            [1,"Интернет магазин"],
                                            [2,"Оптовый магазин"]
                                        ]
                                    }),
                                    displayField: 'name',
                                    valueField: 'id',
                                    value: company != undefined ? company.data.companyTypeId : 0
                                },
                                {
                                    xtype: 'compositefield',
                                    hideLabel: true,
                                    anchor: '100%',
                                    items: [
                                        {
                                            xtype: 'checkbox',
                                            hideLabel: true,
                                            boxLabel: 'Скрыт',
                                            checked: company != undefined ? company.data.hidden : false,
                                            id: 'companyHiddenField',
                                            flex: 1
                                        },
                                        {
                                            xtype: 'checkbox',
                                            hideLabel: true,
                                            boxLabel: 'Новая',
                                            checked: company != undefined ? company.get("new") : false,
                                            id: 'companyNewField',
                                            flex: 1
                                        },
                                        {
                                            xtype: 'checkbox',
                                            hideLabel: true,
                                            boxLabel: 'Горячая (популярная)',
                                            checked: company != undefined ? company.get("hot") : false,
                                            id: 'companyHotField',
                                            flex: 1
                                        }
                                    ]
                                },
                                {
                                    xtype: 'compositefield',
                                    anchor: '100%',
                                    items: [
                                        {
                                            xtype: 'textfield',
                                            fieldLabel: 'Город',
                                            allowBlank: false,
                                            id: 'companyCityField',
                                            readonly: true,
                                            value: company != null ? company.data.city : "Хабаровск",
                                            flex: 1
                                        },
                                        {
                                            xtype: 'textfield',
                                            fieldLabel: 'Email',
                                            allowBlank: false,
                                            id: 'companyEmailField',
                                            readonly: false,
                                            value: company != null ? company.data.email : "",
                                            flex: 1
                                        },
                                        {
                                            xtype: 'textfield',
                                            fieldLabel: 'Веб сайт',
                                            allowBlank: true,
                                            id: 'companyWebsiteField',
                                            readonly: false,
                                            value: company != null ? company.data.website : "",
                                            flex: 1
                                        }
                                    ]
                                },
                                {
                                    xtype: 'compositefield',
                                    anchor: '100%',
                                    items: [
                                        {
                                            xtype: 'textarea',
                                            height: 70,
                                            fieldLabel: 'Контакты',
                                            id: 'companyPhonesField',
                                            flex: 1,
                                            allowBlank: true,
                                            value: company != null ? company.data.phones : ""
                                        },
                                        {
                                            xtype: 'textarea',
                                            height: 70,
                                            id: 'companyWorktimeField',
                                            fieldLabel: 'Время работы',
                                            flex: 1,
                                            allowBlank: true,
                                            value: company != null ? company.data.worktime: ""
                                        }
                                    ]
                                },
                                {
                                    xtype: 'textfield',
                                    fieldLabel: 'URL логотипа',
                                    id: 'companyLogoImageURLField',
                                    allowBlank: true,
                                    anchor: '100%',
                                    value: company != null ? company.data.logoImage: ""
                                }
                            ]
                        },
                        {
                            title: 'Адреса',
                            items: []
                        },
                        {
                            title: 'Товары',
                            items: []
                        },
                        {
                            title: 'Услуги',
                            items: []
                        },
                        {
                            title: 'Новости',
                            items: []
                        },
                        {
                            title: 'Посетители',
                            items: []
                        },
                        {
                            title: 'Визитки',
                            items: []
                        }
                    ]
                }
            ],
            buttons: [
                {
                    text: 'Сохранить',
                    handler: function(){

                    }
                },
                {
                    text: 'Закрыть',
                    handler: function(){
                        wnd.close();
                    }
                }
            ]
        });
        wnd.show();
    }
});